package mid.class1;

import java.util.ArrayList;
import java.util.List;

/**
 * https://leetcode.cn/problems/rearrange-spaces-between-words/description/
 * 重新排列单词间的空格
 */
public class Code05_ReorderSpaces {
    public static void main(String[] args) {
        String text = "  this   is  a sentence ";
        String res = reorderSpaces(text);
        System.out.println("res = " + res);
    }

    public static String reorderSpaces(String text) {
        String[] arr = text.split(" ");
        List<String> t = new ArrayList<>();
        int len = 0;
        // 遍历出字符串和空格
        for (String s : arr) {
            if (!"".equals(s)) {
                t.add(s);
                len += s.length();
            }
        }
        int sp = text.length() - len; // 空格数量 = 总长度 - 有效字符串长度
        if (t.size() < 2) { // 有效字符串<2个，直接匹配空格
            return t.get(0) + createSpace(sp);
        } else {
            String spWidth = createSpace(sp / (t.size() - 1)); // 空格间隔数量
            String lastWidth = createSpace(sp % (t.size() - 1));// 末尾空格数量
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < t.size() - 1; i++) { // 遍历到最后n-1个
                sb.append(t.get(i)).append(spWidth);
            }
            sb.append(t.get(t.size() - 1)).append(lastWidth); // 追加最后一个字符串和末尾空格
            return sb.toString();
        }

    }

    /**
     * 生成空格方法
     */
    public static String createSpace(int n) {
        char[] arr = new char[n];
        for (int i = 0; i < n; i++) {
            arr[i] = ' ';
        }
        return new String(arr);
    }
}
